#include "touch.h"
<<<<<<< HEAD
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <linux/input.h>
int get_touch()
{
    int fd = open("/dev/input/event0", O_RDWR);
    if(fd==-1) return -1;
    int x = -1, y = -1;
    struct input_event ev;
    while (1)
    {
        read(fd, &ev, sizeof(ev));
        // 解析坐标
        if (ev.type == EV_ABS) // 触摸事件
        {
            if (ev.code==ABS_X) // x轴
            {
                x = ev.value;
            }
            else if (ev.code==ABS_Y) // y轴
            {
                y = ev.value;
            }
            else if (ev.code== ABS_PRESSURE&&ev.code==0) // 压力事件 压力为0 就结束循环
            {
                break;
                // 退出
            }
        }
        else if (ev.type ==EV_KEY&&ev.value==0) // 按键事件 ，按键松开，就结束循环
        {
            break;
            // 退出
        }
    }
    printf("x = %d,y = %d\n",x,y);
    return fd;
    close(fd);
}
=======
#include "lcd.h"
#include <linux/input.h>
int get_direction(int x, int y, int x0, int y0)
{
    int dx = x - x0;
    int dy = y - y0;

    if (abs(dx) > abs(dy))
    {
        if (dx > 10)
            return 1; // 右
        else if (dx < -10)
            return 2; // 左
    }
    else
    {
        if (dy > 10)
            return 3; // 下
        else if (dy < -10)
            return 4; // 上
    }
    return 0;
}

// 照片滑动

int get_touch()
{
    // 打开触摸屏
    int fd = open("/dev/input/event0", O_RDWR);
    if (fd == -1)
    {
        perror("open error:"); // 打印错误信息
        return -1;             // 返回错误码
    }

    // 然后不停地去读取
    int x = -1, y = -1;
    int x0 = -1, y0 = -1;

    int direction = 0;
    struct input_event ev;
    while (1)
    {

        read(fd, &ev, sizeof(ev));

        // 解析坐标
        if (ev.type == EV_ABS) // 触摸事件
        {
            if (ev.code == ABS_X) // x轴
            {
                if (x == -1)
                {
                    x = ev.value;
                }
                else
                {
                    x0 = ev.value;
                }
            }
            else if (ev.code == ABS_Y) // y轴
            {
                if (y == -1)
                {
                    y = ev.value;
                }
                else
                {
                    y0 = ev.value;
                }
            }
            else if (ev.code == ABS_PRESSURE && ev.value == 0) // 压力事件，压力为0就结束循环
            {
                break;
            }
        }
        else if (ev.type == EV_KEY && ev.value == 0) // 按键事件，按键松开就结束循环
        {
            break;
        }

        if (x != -1 && x0 != -1 && y != -1 && y0 != -1)
        {
            direction = get_direction(x, y, x0, y0);
            break;
        }
        // sleep(1);
        usleep(8000);
    }
    // 滑动方向
    close(fd);
    return direction;
    // // 打印
    // printf("x = %d , y = %d \n", x, y);

    // 关闭触摸屏

    // return 0; // 返回正常退出码
}
// pair get_touch()
// {
//      int fd = open("/dev/input/event0", O_RDWR);
//     //if(fd==-1) return -1;
//     int x = -1, y = -1;
//     struct input_event ev;
//     while (1)
//     {
//         read(fd, &ev, sizeof(ev));
//         // 解析坐标
//         if (ev.type == EV_ABS) // 触摸事件
//         {
//             if (ev.code==ABS_X) // x轴
//             {
//                 x = ev.value;
//             }
//             else if (ev.code==ABS_Y) // y轴
//             {
//                 y = ev.value;
//             }
//             else if (ev.code== ABS_PRESSURE&&ev.code==0) // 压力事件 压力为0 就结束循环
//             {
//                 break;
//                 // 退出
//             }
//         }
//         else if (ev.type ==EV_KEY&&ev.value==0) // 按键事件 ，按键松开，就结束循环
//         {
//             break;
//             // 退出
//         }
//     }
//     printf("x = %d,y = %d\n",x,y);
//     close(fd);

//     return (pair){x,y};
// }
>>>>>>> eb31325907d20d5a534302285990ef0fe18a1039
